<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>t022scopes</title>

<!-- ANTLR includes -->
<script type="text/javascript" src="../../lib/antlr3-all.js"></script>
<script type="text/javascript" src="t022scopesLexer.js"></script>
<script type="text/javascript" src="t022scopesParser.js"></script>


<!-- JsUnit include -->
<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>

<!-- Test Code -->
<script type="text/javascript">
    var TParser = function() {
        TParser.superclass.constructor.apply(this, arguments);
    }
    org.antlr.lang.extend(TParser, t022scopesParser, {
        emitErrorMessage: function(msg) {},
        reportError: function(e) { throw e; }
    });


    function testa1() {
        var cstream = new org.antlr.runtime.ANTLRStringStream("foobar"),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        // just make sure we don't get any errors
        parser.a();
    }

    function testb1() {
        var cstream = new org.antlr.runtime.ANTLRStringStream("foobar"),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        try {
            parser.b(false);
            fail("above should have throw error");
        } catch(e) {
            assert(org.antlr.lang.isValue(e));
        }
    }

    function testb2() {
        var cstream = new org.antlr.runtime.ANTLRStringStream("foobar"),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        parser.b(true);
    }

    function testc1() {
        var xinput = [
            "{",
            "   int i;",
            "   int j;",
            "   i = 0;",
            "}"
        ].join("\n");

        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream),
            i;

        var symbols = parser.c();
        assert(symbols.i);
        assert(symbols.j);
    }

    function testc2() {
        var xinput = [
            "{",
            "   int i;",
            "   int j;",
            "   i = 0;",
            "   x = 4;",
            "}"
        ].join("\n");

        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream),
            i;

        try {
            parser.c();
            fail("shouldn't get here");
        } catch(e) {
            assertEquals(e.message, "x");
        }
    }

    function testd1() {
        var xinput = [
            "{",
            "   int i;",
            "   int j;",
            "   i = 0;",
            "   {",
            "       int i;",
            "       int x;",
            "       x = 5;",
            "   }",
            "}"
        ].join("\n");

        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream),
            i;

        var symbols = parser.d();
        assert(symbols.i);
        assert(symbols.j);
    }

    function teste1() {
        var xinput = "{ { { { 12 } } } }";
        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        var res = parser.e();
        assertEquals(res, 12);
    }

    function testf1() {
        var xinput = "{ { { { 12 } } } }";
        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        var res = parser.f();
        assertUndefined(res);
    }

    function testf2() {
        var xinput = "{ { 12 } }";
        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
            lexer = new t022scopesLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        var res = parser.f();
        assertUndefined(res);
    }
</script>

</head>
<body>
    <h1>t022scopes</h1>
</body>
</html>
